﻿#ifndef BOARD_MANAGER
#define BOARD_MANAGER
#define WIDTH_CELL	20 //chiều rộng 1 ô trên bàn cờ
#define HEIGHT_CELL 20 //chiều dài 1 ô trên bàn cờ
#define TOTAL_CELL 64
#define CELL 8		
class BoardManager
{
private:
	int	board[CELL][CELL];
	int totalCell; // tổng số ô đã có cờ
	bool isWin;
public:
	

	bool isOK; // biến flag nhận biết đã update dc bàn cờ và cờ, nhớ set lại bên ngoài = false sau mỗi lần đi cờ
	BoardManager();
	void Init();
	int getTotalCell();
	int GetCellAtPos(int x,int y); //trả về giá trị của ô tại pos đưa vào
	int putCellAtPos(int typeOfCell,int x,int y); // đánh 1 con cờ vào vị trí pos 
															//trả về 0 khi ô đó đã có cờ, trả về 1 khi cập nhật ô đó thành công
	void updateBoard(int type,int x,int y);
	void updateChessHorizontal(int type,int x,int y); //check cờ theo hàng ngang
	void updateChessVertical(int type,int x,int y); // check cờ theo thẳng đứng
	void updateChessDiagonal(int type,int x,int y); // check cờ theo hàng chéo
	bool checkWin();
	virtual ~BoardManager();
};
#endif